#ifndef DRAW_HELPER_H
#define DRAW_HELPER_H

#include <iostream>
#include "UniversalIncludes.h"
#include "ContentManager.h" //Needed for Texture2D definition

// Contains a number of methods for frequently used drawing calls for either 2D or 3D
class DrawHelper
{
    // Fields
    public:
    private:
        static DrawHelper dhInstance;

    // Methods
    public:
        static DrawHelper& Instance();                  // Access point to the Singleton class
        void drawLine2D(float startX, float startY, float endX, float endY, Color* c);                          // What about ints? This is 2D after all...
        void drawRect2D(float startX, float startY, float endX, float endY, Color* c, bool isFilled);
        void drawRect2D(float startX, float startY, float endX, float endY, Color* c, Texture2D* texture);
        void drawStr2D(std::string str, int fontSize, float x, float y, Color* c, Texture2D* texture);
        void drawStr2D(std::string str, int fontSize, float x, float y, Color* c, Texture2D* texture, int spacing);
    private:
        DrawHelper();                                   // Constructor is intentially private
        virtual ~DrawHelper(){};
        DrawHelper(const DrawHelper &);                 // Prevent copy construction
        DrawHelper & operator=(const DrawHelper &);     // Prevent class assignment
        RectType* asciiLookup(int value);
};

#endif
